package com.qs.mall;

import org.springframework.boot.SpringApplication;
import org.springframework.cloud.client.SpringCloudApplication;
import org.springframework.cloud.client.loadbalancer.LoadBalanced;
import org.springframework.cloud.netflix.hystrix.EnableHystrix;
import org.springframework.cloud.openfeign.EnableFeignClients;
import org.springframework.context.annotation.Bean;
import org.springframework.web.client.RestTemplate;

/**
 * 订单服务
 *
 * @author qinyupeng
 * @since 2021-03-13 18:58:37
 */
@EnableHystrix
//@EnableCircuitBreaker  //开启对熔断器的支持，等价@EnableHystrix
@EnableFeignClients  //开启Spring Cloud Feign的支持功能
//@EnableEurekaClient  //从Edgware版本开始，@EnableDiscoveryClient 或 @EnableEurekaClient 可省略
//@SpringBootApplication
@SpringCloudApplication  //组合注解，包含@SpringBootApplication、@EnableDiscoveryClient、@EnableCircuitBreaker
public class OrderServerApplication {

    public static void main(String[] args) {
        SpringApplication.run(OrderServerApplication.class, args);
    }

    /**
     * 使用spring提供的RestTemplate发送http请求
     * 1）创建RestTemplate对象交给ioc容器管理；
     * 2）在使用的时候，调用内置方法完成http请求调用；
     * <p>
     * 其中@LoadBalanced是Ribbon提供的负载均衡配置注解
     */
    @LoadBalanced
    @Bean
    public RestTemplate restTemplate() {
        //默认调用的是jdk提供的的HttpURLConnection实现http客户端连接
        return new RestTemplate();
    }

}
